package cn.maidouya.hrm.consumer;

import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

import java.io.IOException;


//消费MQ中的消息
@Component
public class MQHandler {

    //定义邮件的队列名字
    public static final String QUEUE_NAME_EMAIL = "queue_name_email";
    //定义短信的队列名字
    public static final String QUEUE_NAME_SMS = "queue_name_SMS";
    //站内信队列
    public static final String QUEUE_NAME_SYSTEM_MESSAGE = "queue_name_system_message";


    //发送邮件
    @RabbitListener(queues = QUEUE_NAME_EMAIL)
    public void emailHandler(String courseName, Message msg , Channel channel) throws IOException {
        //1.准备要发送的消息
        String message = "亲爱的用户，我们课程【"+courseName+"】课程已经上线，请查收。www.mdoya.com【麦逗呀】";
        //2.去用户(门户网站用户)表查询用户的邮箱：待定
        //3.发送邮件
        System.out.println("邮件发送："+message);
        //手动签收
        channel.basicAck(msg.getMessageProperties().getDeliveryTag(), true);
    }
    //发送短信
    @RabbitListener(queues = QUEUE_NAME_SMS)
    public void smsHandler(String courseName, Message msg , Channel channel) throws IOException {
        //1.准备要发送的消息
        String message = "亲爱的用户，我们课程【"+courseName+"】课程已经上线，请查收。www.麦逗呀.cn【麦逗呀】";
        //2.去用户(门户网站用户)表查询用户的手机号：待定
        //3.发送邮件
        System.out.println("短信发送："+message);
        //手动签收
        channel.basicAck(msg.getMessageProperties().getDeliveryTag(), true);
    }
    //发送站内信
    @RabbitListener(queues = QUEUE_NAME_SYSTEM_MESSAGE)
    public void systemMessageHandler(String courseName, Message msg , Channel channel) throws IOException {
        //1.准备要发送的消息
        String message = "亲爱的用户，我们课程【"+courseName+"】课程已经上线，请查收。www.mdoya.cn【麦逗呀】";
        //2.获取到用户的ID：
        //消息表：  id, 内容 ，用户ID ，已读/未读 ， 链接
        //          1           1       0         www.xxx.xxx.com
        //3.往用户的站内信表保存内容
        System.out.println("站内信发送："+message);
        // 手动签收
        channel.basicAck(msg.getMessageProperties().getDeliveryTag(), true);
    }
}